home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
misc
/
amag
/
sh9301c.lha
/
Windows(S.106)
/
Listing6.txt
< prev
next >
Wrap
Text File
|
1992-11-20
|
6KB
|
200 lines
switch (Message)
{
case WM_INITMENU: // Wenn Menü aufgebaut wird:
// Nicht verfügbare Menüs abblenden, z.B. "Paste",
// wenn kein Text in der Zwischenablage steht.
if(OpenClipboard(hEditWnd))
{
if(IsClipboardFormatAvailable(CF_TEXT))
EnableMenuItem(wParam, IDM_B_PASTE, MF_ENABLED);
else
EnableMenuItem(wParam, IDM_B_PASTE, MF_GRAYED);
CloseClipboard();
}
break;
case WM_COMMAND: // Window-Kommando
switch (wParam) // Bearbeite Menüs
{
case IDM_D_NEU: // Neue Datei
/* Wenn vorherige Datei ungesichert,
Frage ob sichern. */
if (!QuerySaveFile(hWnd))
return (NULL);
bChanges = FALSE; // Nichts geändert
FileName[0] = 0; // Kein File-Name
// Lege neuen Edit-Puffer an:
SetNewBuffer(hWnd, NULL, Untitled);
break;
case IDM_D_OEFFNEN:
// Teste, ob aktuelle Datei gesichert
if (!QuerySaveFile(hWnd))
return (NULL);
// Zeige Standard-Dialog, bewerte User-Wahl,
// lese Datei ein.
break;
case IDM_D_SICHERN:
// Wenn Filename leer, gehe zu "Sichern unter"
if (!FileName[0])
goto saveas;
// Wenn File geändert, speicher ihn
if (bChanges)
SaveFile(hWnd);
break;
case IDM_D_SICHERNUNTER:
saveas: // Zeige Standard-Dialog, bewerte User-Wahl,
// lese Datei ein.
SaveFile(hWnd);
break;
case IDM_D_DRUCKEN:
// Teste, ob Drucker verfügbar
hPr = GetPrinterDC();
if (!hPr)
{ /* Meldung und Abbruch*/ }
// Definniere Abort-Dialog.
// Beschaffe Auflösung einer Druckerseite
// und Zeilenhöhe. Rechne Anzahl Zeilen/Seite.
// Lege kompatiblen DC an.
// Drucke via TextOut().
// Letzte Seit vorschieben und Ende
// Abort-Dialog abbauen
// Speicher freigeben
break;
case IDM_D_DRUCKERINSTALLATION:
/* Beschaffe Druckerkontext. Funktion
ermittelt auch Druckerdaten.
*/
// Lade Druckertreiber (Name in WIN.INI)
/* Ermittle Zeiger auf Druckerinst.-Funktion
und rufe sie auf */
lpfnDevmode = GetProcAddress(hLibrary,
"EXTDEVICEMODE");
nResult = (*lpfnDevmode) (hWnd, hLibrary,
&devmode,
(LPSTR) szDevice,
(LPSTR) szOutput,
NULL, NULL,
DM_COPY | DM_PROMPT);
break;
case IDM_D_INFO: // Zeige About-Dialog
lpfnProcAbout = MakeProcInstance(About, hInst);
DialogBox(hInst, "AboutBox", hWnd,
lpfnProcAbout);
FreeProcInstance(lpfnProcAbout);
break;
case IDM_D_BEENDEN:
QuerySaveFile(hWndMain);
PostMessage(hWnd, WM_CLOSE, 0,0);
break;
// Das ganze Bearbeiten-Menü eines Editors
// kann Windows erledigen
case IDM_B_UNDO:
SendMessage(hEditWnd, WM_UNDO, 0, 0L);
break;
case IDM_B_COPY:
SendMessage(hEditWnd, WM_COPY, 0, 0L);
break;
case IDM_B_CUT:
SendMessage(hEditWnd, WM_CUT, 0, 0L);
break;
case IDM_B_PASTE:
SendMessage(hEditWnd, WM_PASTE, 0, 0L);
break;
case IDM_B_ALL:
SendMessage(hEditWnd, EM_SETSEL, 0,
MAKELONG(0, 32767));
break;
case IDM_B_CLEAR:
SendMessage(hEditWnd, WM_CLEAR, 0, 0L);
break;
case IDM_B_DEL:
OpenClipboard(hEditWnd);
EmptyClipboard();
CloseClipboard();
break;
case IDM_B_FIND:
// Läuft via Standard-Dialog
break;
case IDM_B_REPLACE:
// Läuft via Standard-Dialog
break;
default:
return DefWindowProc(hWnd, Message,
wParam, lParam);
} // End of switch wParam
// Weitere Windows-Messages
case WM_QUERYENDSESSION:
/* Wenn Windows beendet wird und
ein File ungesichert, Frage ob OK. */
return (QuerySaveFile(hWnd));
case WM_SETFOCUS: // Window hat Fokus erhalten
// Setze Caret-Cursor
break;
case WM_SIZE: // Größe neu
// in lParam steht neue Width u. Height
MoveWindow(hEditWnd, 0, 0, LOWORD(lParam),
HIWORD(lParam), TRUE);
break;
case WM_PAINT:
// Clear Background
memset(&ps, 0x00, sizeof(PAINTSTRUCT));
hDC = BeginPaint(hWnd, &ps);
SetBkMode(hDC, TRANSPARENT);
EndPaint(hWnd, &ps);
break;
case WM_CLOSE:
DestroyWindow(hWnd);
if (hWnd == hWndMain)
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
BOOL FAR PASCAL About(HWND hDlg, WORD Message,
WORD wParam, LONG lParam)
{
switch (Message) {
case WM_INITDIALOG:
cwCenter(hDlg, 0);
return TRUE;
case WM_COMMAND:
if (wParam == IDOK || wParam == IDCANCEL)
return EndDialog(hDlg, TRUE);
break;
}
return FALSE;
}